<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   
      <title>2.3. L&oacute;gica de negocio</title>
      <meta name="generator" content="DocBook XSL-NS Stylesheets V1.75.2">
      <link rel="home" href="indice.html" title="Manual Usuario gvHidra">
      <link rel="up" href="ch02.html" title="Cap&iacute;tulo 2. Conceptos t&eacute;cnicos de gvHidra">
      <link rel="prev" href="ch02s02.html" title="2.2. Aspecto visual">
      <link rel="next" href="Parte_2.html" title="Parte&nbsp;II.&nbsp;Elementos de gvHidra">
   </head>
   <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
      <div class="navheader">
         <table width="100%" summary="Navigation header">
            <tr>
               <th colspan="3" align="center">2.3. L&oacute;gica de negocio</th>
            </tr>
            <tr>
               <td width="20%" align="left"><a accesskey="p" href="ch02s02.html">Anterior</a>&nbsp;
               </td>
               <th width="60%" align="center">Cap&iacute;tulo 2. Conceptos t&eacute;cnicos de gvHidra</th>
               <td width="20%" align="right">&nbsp;<a accesskey="n" href="Parte_2.html">Siguiente</a></td>
            </tr>
         </table>
         <hr>
      </div>
      <div class="section" title="2.3. L&oacute;gica de negocio">
         <div class="titlepage">
            <div>
               <div>
                  <h2 class="title" style="clear: both"><a name="d4e520"></a>2.3. L&oacute;gica de negocio
                  </h2>
               </div>
            </div>
         </div>
             
         
             
         <p><a name="C2LogicaNegocio"></a></p>
         
             
         <div class="section" title="2.3.1. Acciones y operaciones">
            <div class="titlepage">
               <div>
                  <div>
                     <h3 class="title"><a name="d4e523"></a>2.3.1. Acciones y operaciones
                     </h3>
                  </div>
               </div>
            </div>
                  
            
                  
            <p>Acciones y operaciones son dos conceptos fundamentales que hay que
                     conocer para desarrollar con el framework.
            </p>
            
                  
            <p>Una acci&oacute;n es el proceso que se inicia tras la solicitud de un
                     usuario (un est&iacute;mulo de la IU). Las acciones est&aacute;n divididas en dos
                     grupos:
            </p>
            
                  
            <div class="orderedlist">
               <ol class="orderedlist" type="1">
                  <li class="listitem">
                               
                     <p><span class="bold"><strong>Acciones gen&eacute;ricas</strong></span></p>
                     
                               
                     <p>Las acciones gen&eacute;ricas resuelven procesos comunes de un
                                  mantenimiento (altas, bajas, modificaciones, b&uacute;squedas...)
                     </p>
                             
                  </li>
                  <li class="listitem">
                               
                     <p><span class="bold"><strong>Acciones particulares</strong></span></p>
                     
                               
                     <p>Con las acciones particulares se podr&aacute;n resolver necesidades
                                  concretas no resueltas por el framework.
                     </p>
                             
                  </li>
               </ol>
            </div>
            
                  
            <p>Las <span class="bold"><strong>operaciones</strong></span> son m&eacute;todos
                     internos del framework que ser&aacute;n llamados para cumplir lo que cada
                     acci&oacute;n requiere, algunas de estas operaciones son p&uacute;blicas por lo tanto
                     el programador podr&aacute; invocarlas desde las <span class="emphasis"><em>acciones
                           particulares</em></span>. El programador podr&aacute; modificar el
                     comportamiento de por defecto de la operaci&oacute;n sobreescribiendo con una
                     serie de <span class="bold"><strong>m&eacute;todos abstractos</strong></span> (<span class="bold"><strong>virtuales</strong></span>).
            </p>
            
                  
            <p>La siguiente imagen ilustra como se produce la comunicaci&oacute;n entre
                     las diferentes capas desde que un est&iacute;mulo es recibido en la interfaz
                     hasta que se resuelve. Podemos ver claramente la diferencia esencial
                     entre acciones y operaciones.
            </p>
            
                  
            <div class="mediaobject" align="center"><img src="images/accionesOperaciones.png" align="middle"></div>
            
                  
            <p>Vamos a explicar un poco m&aacute;s en profundidad cada una de las
                     acciones gen&eacute;ricas. Explicando tanto el objetivo global de la acci&oacute;n,
                     los posibles retornos que produce, las operaciones que los componen y
                     los m&eacute;todos virtuales de cada una de estas operaciones.
            </p>
            
                  
            <div class="table"><a name="d4e546"></a><p class="title"><b>Tabla 2.1. Conceptos comunes a todas las acciones gen&eacute;ricas</b></p>
               <div class="table-contents">
                          
                  
                          
                  <table summary="Conceptos comunes a todas las acciones gen&eacute;ricas" border="1">
                     <colgroup>
                        <col width="100%">
                     </colgroup>
                     <tbody>
                        <tr>
                           <td><span class="bold"><strong>M&eacute;todos virtuales</strong></span>: Todas
                                            las acciones gen&eacute;ricas tienen una serie de m&eacute;todos que el
                                            programador puede sobreescribir completando el comportamiento de
                                            la acci&oacute;n. Generalmente hay un m&eacute;todo virtual &#8220;pre&#8221;, antes de la
                                            acci&oacute;n (inserci&oacute;n, modificaci&oacute;n, borrado), y un m&eacute;todo &#8220;post&#8221;,
                                            despu&eacute;s de la acci&oacute;n.
                           </td>
                        </tr>
                        <tr>
                           <td><span class="bold"><strong>actionForward</strong></span>: Acci&oacute;n de
                                            retorno de un m&eacute;todo virtual. Puede tomar un valor por defecto
                                            asignado por el framework o el programador asignarle uno
                                            particular.
                           </td>
                        </tr>
                     </tbody>
                  </table>
                        
               </div>
            </div><br class="table-break">
            
                  
            <div class="table"><a name="d4e556"></a><p class="title"><b>Tabla 2.2. </b></p>
               <div class="table-contents">
                          
                  <table border="1">
                     <colgroup>
                        <col width="100%">
                     </colgroup>
                     <tbody>
                        <tr>
                           <td>Valores de retorno de los m&eacute;todos virtuales:</td>
                        </tr>
                        <tr>
                           <td>
                                              
                              <div class="itemizedlist">
                                 <ul class="itemizedlist" type="disc">
                                    <li class="listitem">
                                                           
                                       <p><span class="bold"><strong>0</strong></span>: Correcto, la
                                                              ejecuci&oacute;n continua. En este caso el actionForward se
                                                              corresponde con la acci&oacute;n <span class="bold"><strong>gvHidraSuccess</strong></span>.
                                       </p>
                                                         
                                    </li>
                                    <li class="listitem">
                                                           
                                       <p><span class="bold"><strong>-1</strong></span>: Ha habido un
                                                              problema, el framework lanza un error si es problema
                                                              interno de &eacute;l, en cambio, si es un problema particular de
                                                              la aplicaci&oacute;n se ha de capturar el error y lanzar un
                                                              mensaje propio (instrucci&oacute;n:
                                                              <span class="emphasis"><em>$this-&gt;showMessage('xxx');</em></span>) No se
                                                              recargar&aacute; la ventana.
                                       </p>
                                       
                                                           
                                       <p>En este caso el <span class="emphasis"><em>actionForward</em></span>
                                                              se corresponde con la acci&oacute;n <span class="bold"><strong>gvHidraError</strong></span>.
                                       </p>
                                                         
                                    </li>
                                    <li class="listitem">
                                                           
                                       <p><span class="bold"><strong>actionForward</strong></span>:
                                                              Acci&oacute;n de retorno programada por el desarrollador para
                                                              saltarse la ejecuci&oacute;n de por defecto, provoca una recarga
                                                              de la ventana.
                                       </p>
                                       
                                                           
                                       <p>Com&uacute;n a todas las acciones gen&eacute;ricas salvo a la de
                                                              <span class="emphasis"><em>Recargar</em></span>, esta acci&oacute;n no contempla
                                                              una acci&oacute;n de retorno particular.
                                       </p>
                                                         
                                    </li>
                                 </ul>
                              </div>
                                            
                           </td>
                        </tr>
                     </tbody>
                  </table>
                        
               </div>
            </div><br class="table-break">
            
                  
            <div class="section" title="2.3.1.1. Acciones gen&eacute;ricas">
               <div class="titlepage">
                  <div>
                     <div>
                        <h4 class="title"><a name="d4e580"></a>2.3.1.1. Acciones gen&eacute;ricas
                        </h4>
                     </div>
                  </div>
               </div>
                       
               
                       
               <div class="orderedlist">
                  <ol class="orderedlist" type="1">
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Iniciar ventana</strong></span></p>
                        
                                    
                        <p>Esta acci&oacute;n se ejecutar&aacute; al iniciar la ventana.</p>
                        
                                    
                        <p>La acci&oacute;n contiene la siguiente operaci&oacute;n:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>initWindow</em></span>: Genera todas las listas
                                                    definidas para el panel y las carga en el objeto
                                                    v_datosPreinsertar. Almacena el valor del m&oacute;dulo actual por si
                                                    es la primera vez que se entra en una pantalla de dicho
                                                    m&oacute;dulo. Su comportamiento se puede sobrecargar con el m&eacute;todo
                                                    virtual <span class="emphasis"><em>preIniciarVentana</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preIniciarVentana</span>:
                                                                   M&eacute;todo que permite realizar cualquier acci&oacute;n antes de
                                                                   que se cargue la ventana.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Buscar</strong></span></p>
                        
                                    
                        <p>Realiza la consulta del panel bas&aacute;ndose en los datos que hay
                                       en el panel filtro.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de dos operaciones:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>buildQuery</em></span>: M&eacute;todo privado que
                                                    recoge los datos del panel filtro y los a&ntilde;ade al WHERE de la
                                                    consulta del panel. Su comportamiento se puede sobrecargar con
                                                    en el m&eacute;todo virtual <span class="emphasis"><em>preBuscar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preBuscar</span>: M&eacute;todo que
                                                                   permite realizar cualquier acci&oacute;n antes de que se
                                                                   realice la consulta.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshSearch</em></span>: M&eacute;todo p&uacute;blico que
                                                    se encarga de realizar la consulta que se ha generado con el
                                                    m&eacute;todo anterior. Es importante saber, tambi&eacute;n, que este m&eacute;todo
                                                    puede ser llamado en cualquier momento para refrescar los
                                                    datos de un panel, por ejemplo, despu&eacute;s de una acci&oacute;n
                                                    particular. Su comportamiento se puede sobrecargar con el
                                                    m&eacute;todo virtual <span class="emphasis"><em>postBuscar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">postBuscar</span>: M&eacute;todo
                                                                   que permite modificar los resultados obtenidos en la
                                                                   b&uacute;squeda.
                                          </p>
                                          
                                                                
                                          <p>En el caso de que este m&eacute;todo devuelva un 0 existe
                                                                   la posibilidad de tener un
                                                                   <span class="emphasis"><em>actionForward</em></span> con la acci&oacute;n
                                                                   <span class="emphasis"><em>gvHidraNoData</em></span> que mostrar&aacute; un
                                                                   mensaje avisando que la consulta no ha devuelto datos,
                                                                   si se quiere particularizar este caso se sobrecargar&aacute; la
                                                                   acci&oacute;n.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Editar</strong></span></p>
                        
                                    
                        <p>Esta acci&oacute;n gen&eacute;rica se ejecuta cuando estamos con
                                       trabajando con tres modos. Como su propio nombre indica realiza la
                                       consulta de edici&oacute;n a partir de los datos seleccionados en el
                                       panel tabular.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de dos operaciones:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>buildQueryEdit</em></span>: M&eacute;todo privado que
                                                    recoge los datos del panel tabular con los que formar&aacute; la
                                                    WHERE de la consulta que nos devolver&aacute; los datos que se podr&aacute;n
                                                    editar. Su comportamiento se puede sobrecargar con el m&eacute;todo
                                                    virtual <span class="emphasis"><em>preEditar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preEditar</span>: M&eacute;todo que
                                                                   permite realizar cualquier acci&oacute;n antes de que se
                                                                   realice la consulta de edici&oacute;n.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshEdit</em></span>: M&eacute;todo p&uacute;blico que se
                                                    encarga de realizar la consulta que se ha generado con el
                                                    m&eacute;todo anterior, as&iacute; obtener los datos actualizados. Es
                                                    importante saber, tambi&eacute;n, que este m&eacute;todo puede ser llamado
                                                    en cualquier momento para refrescar los datos de un panel, por
                                                    ejemplo, despu&eacute;s de una acci&oacute;n particular. Su comportamiento
                                                    se puede sobrecargar con el m&eacute;todo virtual
                                                    <span class="emphasis"><em>postEditar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">postEditar</span>: M&eacute;todo
                                                                   que permite modificar los resultados obtenidos de la
                                                                   consulta.
                                          </p>
                                          
                                                                
                                          <p>En el caso de que no se haya seleccionado ninguna
                                                                   tupla para editar, aparecer&aacute; un mensaje por defecto
                                                                   inform&aacute;ndonos de la situaci&oacute;n. Para poder sobrecargar
                                                                   este comportamiento existe un
                                                                   <span class="emphasis"><em>actionForward</em></span> con la acci&oacute;n
                                                                   <span class="emphasis"><em>gvHidraNoData</em></span> con el que podremos
                                                                   hacerlo.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Recargar</strong></span></p>
                        
                                    
                        <p>Acci&oacute;n gen&eacute;rica que act&uacute;a en un patr&oacute;n maestro-detalle. Se
                                       ejecutar&aacute; cuando se efect&uacute;e un cambio de maestro, recargar&aacute; los
                                       detalles correspondientes.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de dos operaciones:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>buildQuery</em></span>Details: Crea/recupera la
                                                    instancia del panel detalle activo (puede haber N detalles
                                                    activos). Llama al m&eacute;todo <span class="emphasis"><em>refreshDetail</em></span>
                                                    de esa instancia detalle. Su comportamiento se puede
                                                    sobrecargar con el m&eacute;todo virtual
                                                    <span class="emphasis"><em>preRecargar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preRecargar</span>: M&eacute;todo
                                                                   que permite realizar cualquier acci&oacute;n antes de efectuar
                                                                   la consulta del detalle.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshDetail</em></span>: M&eacute;todo p&uacute;blico que
                                                    se encarga de realizar la consulta que se ha generado en el
                                                    m&eacute;todo anterior, obtener los datos del detalle a partir del
                                                    maestro seleccionado. Su comportamiento se puede sobrecargar
                                                    con el m&eacute;todo virtual <span class="emphasis"><em>postRecargar</em></span>. Es
                                                    importante tener en cuenta que el programador puede llamar a
                                                    este m&eacute;todo en cualquier momento para refrescar los datos de
                                                    un detalle, por ejemplo, despu&eacute;s de una acci&oacute;n
                                                    particular.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">postRecargar</span>: M&eacute;todo
                                                                   que permite modificar los datos obtenidos de la
                                                                   consulta.
                                          </p>
                                          
                                                                
                                          <p>Hay que recordar que los m&eacute;todos virtuales de esta
                                                                   acci&oacute;n no tienen como retorno un actionForward
                                                                   programado por el desarrollador.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Modificar</strong></span></p>
                        
                                    
                        <p>Esta acci&oacute;n gen&eacute;rica se ejecuta desde el modo de trabajo
                                       edici&oacute;n, cuando, tras haber editado unas tuplas, se pulsa el bot&oacute;n
                                       guardar.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de dos operaciones:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>updateSelected</em></span>: M&eacute;todo privado que
                                                    recoge los datos de pantalla y actualiza en la BD los datos
                                                    modificados. Su comportamiento se puede sobrecargar con el
                                                    m&eacute;todo virtual <span class="emphasis"><em>preModificar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preModificar</span>: M&eacute;todo
                                                                   que permite realizar cualquier acci&oacute;n antes de que se
                                                                   lleve a cabo la modificaci&oacute;n.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshEdit</em></span>: M&eacute;todo p&uacute;blico que se
                                                    encarga de actualizar los datos visualizados en el modo de
                                                    trabajo edici&oacute;n. Su comportamiento se puede sobrecargar con el
                                                    m&eacute;todo virtual <span class="emphasis"><em>postModificar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">postModificar</span>: M&eacute;todo
                                                                   que permite utilizar los datos modificados en otras
                                                                   operaciones.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshSearch o refreshDetail</em></span>:
                                                    M&eacute;todo p&uacute;blico que se encarga de actualizar los datos despu&eacute;s
                                                    de la operaci&oacute;n de actualizaci&oacute;n en el panel tabular. Es
                                                    importante tener en cuenta que esto implica que se lanzar&aacute; el
                                                    <span class="emphasis"><em>postBuscar</em></span> o el
                                                    <span class="emphasis"><em>postRecargar</em></span>.
                                 </p>
                                               
                              </li>
                           </ul>
                        </div>
                        
                                    
                        <p>La acci&oacute;n modificar por defecto deja el foco en el modo
                                       edici&oacute;n, este comportamiento se puede cambiar. El cambio se
                                       realiza en el fichero <span class="emphasis"><em>mappings.php</em></span>, en la
                                       entrada correspondiente a modificar, en la acci&oacute;n
                                       <span class="emphasis"><em>gvHidraSuccess</em></span>, cambiar en la url el panel
                                       destino (p.ej. panel=listado)
                        </p>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Borrar</strong></span></p>
                        
                                    
                        <p>Esta acci&oacute;n gen&eacute;rica se dispara &#8220;t&iacute;picamente&#8221; desde el modo
                                       de trabajo tabular para eliminar las tuplas seleccionadas.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de dos operaciones:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>deleteSelected</em></span>: Recoge las tuplas
                                                    seleccionadas del panel y las elimina. Esta operaci&oacute;n se puede
                                                    parametrizar haciendo uso de los m&eacute;todos virtuales
                                                    <span class="emphasis"><em>preBorrar</em></span> y
                                                    <span class="emphasis"><em>postBorrar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preBorrar</span>: M&eacute;todo que
                                                                   permite realizar cualquier acci&oacute;n antes de que se lleve
                                                                   a cabo el borrado.
                                          </p>
                                          
                                                                
                                          <p><span class="emphasis">postBorrar</span>: M&eacute;todo
                                                                   que permite modificar los resultados obtenidos despu&eacute;s
                                                                   del borrado.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshSearch o refreshDetail</em></span>:
                                                    M&eacute;todo p&uacute;blico que se encarga de actualizar los datos despu&eacute;s
                                                    de la operaci&oacute;n de actualizaci&oacute;n en el panel tabular. Es
                                                    importante tener en cuenta que esto implica que se lanzar&aacute; el
                                                    <span class="emphasis"><em>postBuscar</em></span> o el
                                                    <span class="emphasis"><em>postRecargar</em></span>.
                                 </p>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Insertar</strong></span></p>
                        
                                    
                        <p>Esta acci&oacute;n gen&eacute;rica se dispara desde el modo de trabajo
                                       inserci&oacute;n cuando, tras haber introducido los datos se pulsa el
                                       bot&oacute;n guardar.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de dos operaciones:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>insertData</em></span>: Recoge los datos de la
                                                    pantalla y los inserta en la BD. Esta operaci&oacute;n se puede
                                                    parametrizar haciendo uso de los m&eacute;todos virtuales
                                                    <span class="emphasis"><em>preInsertar</em></span> y
                                                    <span class="emphasis"><em>postInsertar</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preInsertar</span>: M&eacute;todo
                                                                   que permite realizar cualquier acci&oacute;n antes de que se
                                                                   lleve a cabo la inserci&oacute;n.
                                          </p>
                                          
                                                                
                                          <p><span class="emphasis">postInsertar</span>: M&eacute;todo
                                                                   que permite utilizar los datos modificados en otras
                                                                   operaciones.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>refreshSearch o refreshDetail</em></span>:
                                                    M&eacute;todo p&uacute;blico que se encarga de actualizar los datos despu&eacute;s
                                                    de la operaci&oacute;n de actualizaci&oacute;n en el panel tabular. Es
                                                    importante tener en cuenta que esto implica que se lanzar&aacute; el
                                                    <span class="emphasis"><em>postBuscar</em></span> o el
                                                    <span class="emphasis"><em>postRecargar</em></span>.
                                 </p>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                     <li class="listitem">
                                    
                        <p><span class="bold"><strong>Nuevo</strong></span></p>
                        
                                    
                        <p>Esta acci&oacute;n gen&eacute;rica se invoca para preparar la presentaci&oacute;n
                                       de datos en pantalla antes de una inserci&oacute;n.
                        </p>
                        
                                    
                        <p>La acci&oacute;n se compone de la siguiente operaci&oacute;n:</p>
                        
                                    
                        <div class="itemizedlist">
                           <ul class="itemizedlist" type="disc">
                              <li class="listitem">
                                                 
                                 <p><span class="emphasis"><em>nuevo</em></span>: Realizar&aacute; las operaciones de
                                                    preparaci&oacute;n de los datos y visualizaci&oacute;n previos a la
                                                    inserci&oacute;n. Esta operaci&oacute;n se puede sobreescribir con el m&eacute;todo
                                                    virtual <span class="emphasis"><em>preNuevo</em></span>.
                                 </p>
                                 
                                                 
                                 <div class="variablelist">
                                    <dl>
                                       <dt></dt>
                                       <dd>
                                                                
                                          <p><span class="emphasis">preNuevo</span>: M&eacute;todo que
                                                                   permite sobrecargar la acci&oacute;n nuevo antes de ser
                                                                   lanzada. Por ejemplo, cuando tenemos alg&uacute;n campo que
                                                                   tiene un valor por defecto o es calculado a partir de
                                                                   los valores de otros campos.
                                          </p>
                                                              
                                       </dd>
                                    </dl>
                                 </div>
                                               
                              </li>
                           </ul>
                        </div>
                                  
                     </li>
                  </ol>
               </div>
                     
            </div>
                
         </div>
           
      </div>
      <div class="navfooter">
         <hr>
         <table width="100%" summary="Navigation footer">
            <tr>
               <td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Anterior</a>&nbsp;
               </td>
               <td width="20%" align="center"><a accesskey="u" href="ch02.html">Subir</a></td>
               <td width="40%" align="right">&nbsp;<a accesskey="n" href="Parte_2.html">Siguiente</a></td>
            </tr>
            <tr>
               <td width="40%" align="left" valign="top">2.2. Aspecto visual&nbsp;</td>
               <td width="20%" align="center"><a accesskey="h" href="indice.html">Inicio</a></td>
               <td width="40%" align="right" valign="top">&nbsp;Parte&nbsp;II.&nbsp;Elementos de gvHidra</td>
            </tr>
         </table>
      </div>
   </body>
</html>